package cn.qin.xhangapi.util.redis;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * Redis工具
 *
 * @author 多仔ヾ
 */
@Component  // 把一个类标记成Bean对象   把这个类放到Spring的容器中
public class RedisUtil {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 存数据
     *
     * @param key 键
     * @param object 值
     * @return boolean
     * @author 多仔ヾ
     */
    public boolean set(String key, Object object){
        redisTemplate.opsForValue().set(key, object);
        return true;
    }

    /**
     * 存数据
     *
     * @param key 键
     * @param object 值
     * @param time 有效时间（秒）
     * @return boolean
     * @author 多仔ヾ
     */
    public boolean set(String key, Object object, long time){
        redisTemplate.opsForValue().set(key, object, time, TimeUnit.SECONDS);
        return true;
    }

    /**
     * 取数据
     *
     * @param key 键
     * @return java.lang.Object
     * @author 多仔ヾ
     */
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    /**
     * 设置有效时间
     *
     * @param key 键
     * @param time 有效时间（秒）
     * @return boolean
     * @author 多仔ヾ
     */
    public boolean expire(String key, long time) {
        try {
            if (time > 0) {
                redisTemplate.expire(key, time, TimeUnit.SECONDS);
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    //判断是否存在
    public boolean hasKey(String key) {
        try {
            return Boolean.TRUE.equals(redisTemplate.hasKey(key));
        } catch (Exception e) {
            return false;
        }
    }

    //删除键
    public void del(String key) {
        redisTemplate.delete(key);
    }

}